如何解决forms.ModelChoiceField用默认值更新视图
我有来自ForeignKey模型的Form ModelChoiceField 我的模型是:
class Fielinfo(models.Model):
Perimeter = models.CharField(max_length=50,unique=True)
FidlAbr = models.CharField(max_length=15,unique=True)
和我的第二个模特:
class Wellinfo(models.Model):
WellID = models.CharField(max_length=15,unique=True)
Perimetre = models.ForeignKey(Fielinfo,to_field='Perimeter',on_delete=models.CASCADE)
我的forms.py是:
class NewWells(forms.ModelForm):
Perimetre = forms.ModelChoiceField(queryset=Fielinfo.objects.all(),label='Perimetre',required=True)
问题是当我需要更新视图时,它没有给我初始值吗? 请问我该如何解决? (在管理区域中,它给了我初始值)。
我的views.py是:
class PostUpadtW(UserPassesTestMixin,LoginRequiredMixin,UpdateView):
model = Wellinfo
template_name = 'Home/WELLINFO/Upd_W.html'
form_class = NewWells
def form_valid(self,form):
form.instance.author = self.request.user
return super().form_valid(form)
def test_func(self):
post = self.get_object()
if self.request.user== post.author:
return True
else:
return False
解决方法
在Django中使用ForeignKey非常复杂,所以我像这样解决了它; 在models.py
中class Fielinfo(models.Model):
Perimeter = models.CharField(max_length=50,unique=True)
FidlAbr = models.CharField(max_length=15,unique=True)
我改变了这个
class Wellinfo(models.Model):
WellID = models.CharField(max_length=15,unique=True)
Perimetre = models.CharField(max_length=50)
在我的forms.py中,我这样做了:
class NewWells(forms.ModelForm):
TFTFields =Fielinfo.objects.all()[0:]
ListField= []
for fields in TFTFields:
ListField += [fields.Perimeter]
ChoiceItems= list(zip(ListField,ListField))
Perimetre = forms.ChoiceField(label='Perimetre',choices=ChoiceItems)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。