我有一个模型(父模型):
class Post(models.Model):
image = models.ImageField(upload_to='%Y/%m/%d')
title = models.CharField(max_length=200)
width = models.DecimalField(max_digits=3, decimal_places=0)
height = models.DecimalField(max_digits=3, decimal_places=0)
year = models.PositiveIntegerField()
def __str__(self):
return self.title
和另一个模型(儿童模特):
class Addimg(models.Model):
post = models.ForeignKey('Post', null=True)
addimg = models.ImageField(upload_to='%Y/%m/%d')
def __str__(self):
return self.post
我的Addimg表格:
class AddimgForm(forms.ModelForm):
class Meta:
model = Addimg
fields = ('post', 'addimg', 'width', 'height',)
views.py使用表格:
def addimg(request, pk):
if request.method == "POST":
form = AddimgForm(request.POST, request.FILES)
post = get_object_or_404(Post, pk=pk)
if form.is_valid():
addimg = form.save(commit=False)
addimg.addimg = request.FILES['addimg']
addimg.save()
return redirect('blog.views.detail', pk=post.pk)
else:
form = AddimgForm()
return render(request, 'blog/edit.html', {'form': form})
我的问题是,当我创建一个“子模型”时,我的post字段将所有已创建的Post模型的实例作为选项返回。我想要的是它自动只显示与之相关的一个帖子而没有选择。 ForeignKey是正确的模型吗?
任何想法如何工作。感谢
答案 0 :(得分:1)
您要做的是创建Many-to-one relationship
。例如,
post = models.ForeignKey('Post',null = True)
这意味着您可以对其进行过滤,例如
Addimg.objects.filter(post=Post)
or
Post.objects.get(pk=1)
Post.addimg_set.filter(xyz=etc)
在此处阅读更多内容:https://docs.djangoproject.com/en/1.8/topics/db/examples/many_to_one/
答案 1 :(得分:1)
INSERT INTO ResultsTable (ActionType, Count, UserType)
SELECT ActionType, UserType, COUNT(*) as Count
FROM ActionTable
GROUP BY ActionType, UserType;
字段在Django ModelForm中被翻译为ModelChoiceField
。如果您检查该类,您会注意到此类字段需要ForeignKey
属性。默认情况下,Django提供完整的对象集。您可以通过提供表单所需的queryset
对象在表单__init__
方法中覆盖此内容。
请考虑以下示例代码:
parent