Поле формы модели Django, чтобы иметь выпадающий список пользователя на основе условия - PullRequest
0 голосов
/ 09 марта 2019

В Django Modelform (Product_definition) я хочу иметь выпадающий список (имя продавца), который будет отображать пользователей только в том случае, если их обозначение в форме пользователя - "Merchant". Возможно ли, что я мог бы получить список пользователей для выпадающего списка на основе этого условия. Обратите внимание, что я не требую, чтобы это был внешний ключ, так как подключение моделей не требуется. Это форма, которая содержит обозначение:

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

Я создал внешний ключ на данный момент, но он мне не нужен, и в раскрывающемся списке не указаны имена только продавцов.

1 Ответ

1 голос
/ 09 марта 2019

Я думаю, что вы можете сделать это, используя ModelChoiceField :

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__'
...