为了账号安全,请及时绑定邮箱和手机立即绑定

如何从另一个模型中的 django 用户获取特定用户

如何从另一个模型中的 django 用户获取特定用户

茅侃侃 2021-12-26 10:38:56
我在这个模型中有一个名为UserTypes的模型,我使用 User 作为 OneToOne 字段,而UserTypes模型与User模型内联。我创建这个模型是为了给用户一个状态,就像我们做的 is_staff=True 一样。现在我想在另一个名为 Order 的模型中显示其 staff_status = "Delivery Boy" 的所有用户,该模型位于同一项目的另一个应用程序中模型.py(app1)class UserTypes(models.Model):    user = models.OneToOneField(User, on_delete=models.CASCADE)    staff_choices = (        ('', ''),        ('Admin', 'Admin'),        ('Chef', 'Chef'),        ('Delivery Boy', 'Delivery Boy'),    )    staff_status = models.CharField(max_length=15, choices=staff_choices, default=staff_choices[0][0])     def __str__(self):        return self.staff_status模型.py(app2)class Order(models.Model):    name = models.CharField(max_length=60)    email = models.EmailField(max_length=60,default=None, blank=True)    mobile_no = models.CharField(max_length=13, default=None)     address = models.CharField(max_length=150)    created = models.DateTimeField(auto_now_add=True)    updated = models.DateTimeField(auto_now=True)    status_choices = (        ('In Queue', 'In Queue'),        ('Processing', 'Processing'),        ('Ready', 'Ready'),        ('Delivered', 'Delivered'),        ('Paid', 'Paid'),        ('Cancelled', 'Cancelled'),    )     status = models.CharField(max_length=15, choices=status_choices,             default=status_choices[0][0])    total = models.DecimalField(max_digits=10, decimal_places=2,default=0)class Meta:    ordering = ('created', )def __str__(self):    return 'Order {}'.format(self.id)def get_total(self):    return sum(item.get_cost() for item in self.items.all())
查看完整描述

1 回答

?
holdtom

TA贡献1805条经验 获得超10个赞

在 app2 models.py 文件中添加一个字段以将用户类型存储在订单表中:


from app1.models import UserTypes


user = models.OneToOneField(UserTypes, on_delete=models.CASCADE)

将此代码添加到您的 app2 的 admin.py 文件中:


from app1.models import UserTypes

from .models import Order


class OrderAdmin(admin.ModelAdmin):

    def get_form(self, request, obj=None, **kwargs):

        form = super(OrderAdmin,self).get_form(request, obj,**kwargs)

        # form class is created per request by modelform_factory function

        # so it's safe to modify

        # we modify the the queryset

        form.base_fields['user'].queryset = 

        form.base_fields['user'].queryset.filter(staff_choices='Delivery Boy')

        return form

admin.site.register(Order, OrderAdmin)


查看完整回答
反对 回复 2021-12-26
  • 1 回答
  • 0 关注
  • 170 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信