2016-02-13 52 views
0

嗨,我需要添加请求用户PK UserCreationForm。我尝试了很多次,但没有结果。在我的仪表板中,我有用户所有者,并且我有用户卖家。 所有3种类型用户的一种模式。因此,业主可以创建角色=卖家的其他用户,但为了这个,我需要PARAM = request.user.pk添加父领域卖家Django UserCreationForm add request.user.pk?

定制的usermodel

from django.db import models 
from django.contrib.auth.models import AbstractUser 


USER = 0 
OWNER = 1 
SELLER = 2 
user_type_choice = (
    (USER, 'User'), 
    (OWNER, 'Owner'), 
    (SELLER, 'Seller'), 
) 


class User(AbstractUser): 
    role = models.CharField(max_length=100, choices=user_type_choice, default=USER) 
    idn = models.CharField(max_length=10, blank=True, default=None, null=True) 
    mobile = models.CharField(max_length=15, blank=True, default=None, null=True) 
    parent = models.ForeignKey('self', null=True, blank=True) 
    tariff = models.IntegerField(default=None, null=True, blank=True) 

    class Meta(AbstractUser.Meta): 
     swappable = 'AUTH_USER_MODEL' 

forms.py

class SellerRegisterForm(UserCreationForm): 

email = forms.EmailField(required=True) 
first_name = forms.CharField(required=False) 
last_name = forms.CharField(required=False) 

class Meta: 
    model = User 
    fields = ('username', 'email', 'password1', 'password2') """try add and remove 'parent' here in felds """ 

def save(self, commit=True): 
    user = super(SellerRegisterForm, self).save(commit=False) 
    user.email = self.cleaned_data['email'] 
    user.first_name = self.cleaned_data['first_name'] 
    user.last_name = self.cleaned_data['last_name'] 
    user.role = ROLE_SELLER 
    # try add user.parent = self.request.user.pk 
    # but it does not work 

    if commit: 
     user.save() 

    return user 

views.py

def register_seller(request): 
if request.method == 'POST': 
    form = SellerRegisterForm(request.POST)  # create form object 
    if form.is_valid(): 
     #try add new_form = form.save(commit=False) 
     # new_form.parent = request.user.pk 
     # new_form.save() but it not working 

     form.save() 
     return HttpResponseRedirect('/accounts/login') 

else: 
    form = SellerRegisterForm() 
return render(request, 'register_owner.html', {'form': form}) 
+1

“它不工作”的含义是什么?错误?结果无效? – Sayse

+0

用户与角色sellere创建,但没有父= request.user.pk – user3170400

+0

尝试'user.parent = self.request.user' – Selcuk

回答

1

您需要通过窗体的通过用户对象10方法。

class SellerRegisterForm(UserCreationForm): 
    def __init__(self, *args, **kwargs): 
     self.user = kwargs.pop('user', None) 
     super(SellerRegisterForm, self).__init__(*args, **kwargs) 

,并在您的视图:

form = SellerRegisterForm(request.POST, user=request.user) 

然后,只需在你的窗体类使用self.user任何地方。

+0

thx。我尝试了一些这样想,但与实例和初始。非常感谢你 – user3170400