下面的實質。 我有一些不同的雜誌。 AutoForm模板顯示所有文章和所有作者可能的選擇(不僅來自當前雜誌)。如何限制只從當前雜誌的文章的作者選擇?我可以只使用模板來做到這一點嗎?如果沒有,那麼如何?從Django模板中的ModelForms隱藏外鍵字段
models.py
class Magazine(models.Model):
Name = models.CharField(max_length=200)
class Article(models.Model):
Name = models.CharField(max_length=200)
Magazine = models.ForeignKey(Magazine)
class Author(models.Model):
Name = models.CharField(max_length=200)
Magazine = models.ForeignKey(Magazine)
class Sets(models.Model):
Name = models.CharField(max_length=200)
Magazine = models.ForeignKey(Magazine)
Aut = models.ManyToManyField(Author, null=True, blank=True)
Set = models.ForeignKey(Article, null=True, blank=True)
forms.py:
class MagazineForm(ModelForm):
class Meta:
model = Magazine
fields = {'Name'}
class ArticleForm(ModelForm):
class Meta:
model = Article
fields = {'Name'}
class AuthorForm(ModelForm):
class Meta:
model = Author
fields = {'Name'}
class SetsForm(ModelForm):
class Meta:
model = Sets
fields = {'Name', 'Set', 'Aut'}
views.py
def building_details(request, magazine_id):
sets_form = SetsForm
args = {}
args.update(csrf(request))
args['magazine'] = Magazine.objects.get(id=magazine_id)
args['article'] = Article.objects.filter(Magazine=magazine_id)
args['author'] = Author.objects.filter(Magazine=magazine_id)
args['sets'] = Sets.objects.filter(Magazine=magazine_id)
args['setform'] = sets_form
return render_to_response('building.html', args)
模板
<form action='/add/{{ magazine.id }}/' method='post'>
{% csrf_token %}
{{ setform }}
<input type='submit' class='button' value="Добавить">
</form>
</div>
也許某處該條目有錯誤(我簡單編輯,刪除這裏就不發揮作用,本質上)。一般來說,我擁有一切正常的工作,除了顯示所有對象,而不是僅顯示當前對象。
謝謝!它看起來像可以工作的東西,但是當我使用你的解決方案時,tyere是錯誤的:name'magazine_id'沒有被定義 –
哎呀,現在應該工作。如果它的有用不要忘記接受或upvote。 – 2016-01-14 02:32:48
非常感謝!但現在有錯誤:'名稱'窗體'未定義'在行'where.ModelChoiceField' –