0

模型.py

class Customers(models.Model):
    Name = models.CharField(max_length=100)

class Staff(models.Model):
    Name = models.CharField(max_length=100)

class Cereals(models.Model):
    Name = models.CharField(max_length=100)
    Operator = models.CharField(max_length=100)

表格.py

class EditCereals(forms.ModelForm):
    class Meta:
        model = Cereals
        fields = ['Name', 'Operator']

    widgets = {
        'Operator': Select(),
        'Name': Select(),
    }

    def __init__(self, *args, **kwargs):
        super(EditCereals, self).__init__(*args, **kwargs)
        self.fields['Name'] = forms.ModelChoiceField(queryset=Customers.objects.all().order_by('Name'))
        self.fields['Operator'] = forms.ModelChoiceField(queryset=Staff.objects.all().order_by('Name'))

当我运行“名称”表单时,会显示客户对象(1)、客户对象(2)等,与“操作员”相同,它会显示员工对象(1)、员工对象(2)等

我如何让它显示实际姓名,例如 Bill、Fred、

4

1 回答 1

0

你应该使用def __str__()...方法。此方法适用于任何对象的字符串表示。

例子

class Customers(models.Model):
    name = models.CharField(max_length=100)
    
    def __str__(self):
        return self.name

请用带下划线的小写字母命名您的实例变量。大写的情况应该只用于类。

于 2020-11-11T13:57:52.620 回答