繁体   English   中英

Django过滤查询外键

[英]Django Filter Queries Foreign Key

我正在努力为我的项目获取正确的查询。 这是一个例子或我的模型:

class OrderItem(models.Model):
    order_type = models.CharField(max_length=50, blank=True, null=True)
    certification_no = models.CharField(max_length=10, default="43534")
    client = models.ForeignKey(Client, blank=True, null=True)
    item = models.CharField(max_length=500)
    quantity = models.PositiveIntegerField(default=1)
    rate = models.DecimalField(decimal_places=2, max_digits=7)
    signer = models.CharField(max_length=500)
    item_value = models.DecimalField(decimal_places=2, max_digits=7)
    certification_type = models.CharField(max_length=200)        
    packing_list = models.FileField(upload_to='files/%Y-%m-%d', blank=True, null=True)
    wholesale = models.BooleanField(default=False)       
    auth_fee = models.DecimalField(decimal_places=2, max_digits=7, blank=True, null=True)
    label_position = models.CharField(max_length=250)    
    order = models.ForeignKey('Order', blank=True, null=True)
    ordered = models.BooleanField(default=False)
    created_on = models.DateTimeField(auto_now_add = True)

    def __unicode__(self):
        return self.item

    def total_auth_fee(self):
            return self.quantity * self.auth_fee

    class Meta:
        ordering = ['-created_on']

class Client(models.Model):
    user = models.OneToOneField(User)
    phone_number = models.PositiveIntegerField(max_length=30,blank=False)
    shipping_address = models.CharField(max_length=500, null=True)  
    zipcode = models.CharField(max_length=30,blank=False)    

    class Meta:
        verbose_name_plural = "Client"

    def __unicode__(self):
        return self.user.username

我如何以内置的django格式获取phone_number((客户名称和电子邮件地址))? 谢谢

在您的HTML代码中,您可以轻松访问用户信息。 例如

<p>{{ user.username }}</p>
<p>{{ user.email }}</p>
<p>{{ user.first_name }}</p>
<p>{{ user.last_name }}</p>

如果您想以Django形式访问它们,只需from django.contrib.auth.models import User添加您的代码

例如看这段代码。 这是添加新用户的简单形式

views.py

def Signup(request):
if request.method == "POST":
    if not request.user.is_authenticated():
        form = UserCreationForm(request.POST)
        if form.is_valid():
            new_username = form.cleaned_data['username']
            new_password = form.cleaned_data['password1']
            new_email = form.cleaned_data['email']
            new_first_name = form.cleaned_data['first_name']
            new_last_name = form.cleaned_data['last_name']
            #hashed_password = hashlib.md5(new_password).hexdigest()
            new_user = User.objects.create_user(
                        username = new_username, 
                        email = new_email,
                        first_name = new_first_name,
                        last_name = new_last_name)
            if new_password:
                new_user.set_password(new_password)
            else:
                new_user.set_unusable_password()
            new_user.save()
            new_user.is_active = True
            auth_user = authenticate(username = new_username, password = new_password)
            if auth_user is not None:
                login(request, auth_user)
            return HttpResponseRedirect('../')
else:
    form = UserCreationForm()
return render(request, 'Dashboard/signup.html', {'form': form})

表格

from django.contrib.auth.forms import UserCreationForm

class SignupForm1(UserCreationForm):
    class Meta:
        model = User
        fields = ('username', 'password', 'email', 'first_name' , 'last_name')

如果您查看forms.pySignupForm1User继承,那么您可以获取用户信息(字段)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM