Yas*_*han 2 django django-forms
我的模型定义为:
class MembershipHistory(models.Model):
mem_name = models.ForeignKey(Member, on_delete=models.CASCADE, related_name='mem_number')
project_number = models.IntegerField()
project_name = models.CharField(max_length=200)
evaluator_remark = models.TextField(null=True, blank=True)
Run Code Online (Sandbox Code Playgroud)
这是我制作的另一个模型 ForeignKey
class Member(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
name = models.CharField(max_length=200)
membership_number = models.CharField(max_length=10)
Run Code Online (Sandbox Code Playgroud)
我将我的表格定义为
class MembershipHistoryForm(forms.Form):
def __init__(self,*args, **kwargs):
self.user = kwargs.pop('user')
super(MembershipHistoryForm, self).__init__(*args, **kwargs)
self.fields['mem_name'].queryset = Member.objects.get(user=self.user)
#mem_name = forms.ModelChoiceField(empty_label="NAME")
class Meta:
model = MembershipHistory
fields = '__all__'
widgets = {
'project_number':forms.TextInput(attrs={'placeholder':'Project Number'}),
'project_name':forms.TextInput(attrs={'placeholder':'Project Name'}),
'evaluator_remark':forms.Textarea(attrs={'placeholder':'Evaluator Remark'}),
}
Run Code Online (Sandbox Code Playgroud)
现在,每当我实例化表单时,我都不会收到以下错误
Django Version: 1.10.4
Exception Type: AttributeError
Exception Value: 'Member' object has no attribute 'all'
Run Code Online (Sandbox Code Playgroud)
关于错误在哪里的任何想法?
如果您检查适当的 django 文档部分,您可以看到
get()
get(**kwargs)
Returns the object matching the given lookup parameters
Run Code Online (Sandbox Code Playgroud)
这意味着它在适当的情况下返回一个对象而不是 queryset,但form需要 queryset 所以而不是使用get方法 use filter。
self.fields['mem_name'].queryset = Member.objects.filter(user=self.user)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4581 次 |
| 最近记录: |