Python Django模型表单字段根据条件具有用户下拉列表

Python Django模型表单字段根据条件具有用户下拉列表,python,django,django-models,django-forms,Python,Django,Django Models,Django Forms,在Django模型表单(Product_definition)中,我希望有一个下拉列表(商户名称),仅当用户表单中的指定为“商户”时,才会显示用户。 是否有可能基于此条件获取下拉列表的用户列表。请注意,我不要求它是外键,因为不需要连接模型。 这是包含以下名称的表格: from django.contrib.auth.models import User class UserProfileInfo(models.Model): user = models.OneToOneField(Us

在Django模型表单(Product_definition)中,我希望有一个下拉列表(商户名称),仅当用户表单中的指定为“商户”时,才会显示用户。 是否有可能基于此条件获取下拉列表的用户列表。请注意,我不要求它是外键,因为不需要连接模型。 这是包含以下名称的表格:

from django.contrib.auth.models import User

class UserProfileInfo(models.Model):
    user = models.OneToOneField(User,on_delete = models.CASCADE)

    #extra UserAttribute
    MERCHANT = 'MR'
    FABRIC = 'FR'
    WASHING = 'WS'
    PRINT = 'PR'
    PLANNER = 'PL'

    DESIGNATION_CHOICES =(
        (PLANNER,'Planner'),
        (MERCHANT,'Merchant'),
        (FABRIC,'Fabric'),
        (WASHING,'Washing'),
        (PRINT,'Printing'),

    )

    Designation =models.CharField(
        max_length = 20,
        choices = DESIGNATION_CHOICES,
        default= 'PLANNER'
    )
    def __str__(self):
        return self.user.username
这是一张有商户名称的表格,我希望所有商户的名称都出现在这里

class Product_definition(models.Model):

Order_number = models.CharField(max_length=25,unique = True, blank = True, null = True)
style_name = models.CharField(max_length=15, blank = True, null = True)
color = models.CharField(max_length=15, blank = True, null = True)
Order_qty = models.PositiveIntegerField()
SMV = models.FloatField()
MERCHANT = models.ForeignKey(UserProfileInfo,on_delete= models.CASCADE,default='Select')
def __str__(self):
    return self.Order_number

我现在已经创建了一个外键,但我不需要它,它也不会在下拉列表中只列出商家的名字

我认为您可以通过以下方式完成此操作:


当尝试迁移时,我得到了“以10为基数的int()的无效文本”。在添加此表单之前,我可以迁移。我还将所有整数字段替换为FloatField,但它没有解决错误
class ProductForm(forms.ModelForm):  # please use CamelCase when defining Class Names
    MERCHANT = forms.ModelChoiceField(queryset=UserProfileInfo.objects.filter(Designation=UserProfileInfo.MARCHENT))  # Please use sname_case when naming attributes
    class Meta:
       model = Product_definition  # Please use CamelCase when defining model class name
       fields = '__all__'