rat*_*123 0 python django django-views
所以我认为这不是做事情的正确方法,但是我正在尝试学习Django,并且正在尝试一些事情。我试图Formula通过在的实例中进行硬编码来为模型设置外键maker。
楷模:
class Cooker(models.Model):
name = models.CharField(max_length=20, name="name")
background = models.CharField(max_length=500, name="background")
class Formula(models.Model):
food = models.CharField(max_length=200, name="food")
maker = models.ForeignKey(Cooker, related_name="cooker_key")
Run Code Online (Sandbox Code Playgroud)
观看次数
class CookerCreate(CreateView):
template_name = "cookercreate.html"
model = Cooker
fields = ['name','background']
success_url = reverse_lazy('cooker')
class FormulaCreate(CreateView):
template_name = "formulahome.html"
model = Formula
fields = ['food']
success_url = reverse_lazy('formulahome')
def form_valid(self, form):
self.object = form.save(commit = False)
self.object.maker = Cooker.objects.get(pk=1)
form.save()
return reverse_lazy('formula home')
Run Code Online (Sandbox Code Playgroud)
在FormulaCreate我要设置的类中self.object.maker,我只想对Cooker已经创建的a进行硬编码。谢谢
编辑:当我尝试提交表单时,我FormulaCreate(CreateView)得到了错误Exception Value: '__proxy__' object has no attribute 'get'
错误的原因是form_valid应该返回一个Response对象,并且您正在返回一个URL。
而不是手动执行此操作,您应该只调用父方法,该方法将重定向到success_url您已经定义的:
def form_valid(self, form):
self.object = form.save(commit = False)
self.object.maker = Cooker.objects.get(pk=1)
form.save()
return super(FormulaCreate, self).form_valid(form)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4704 次 |
| 最近记录: |