这与表单无关,而与模型有关。
现在我有:
class Verse(models.Model):
code = models.CharField(
max_length=10, verbose_name='vers',
unique=True) # ex : v01
# ... others fields
和:
class Hemistiche(models.Model):
code = models.CharField(
max_length=20, verbose_name='codeHem',
unique=True) # ex : v01h01, v01h02
verse = models.ForeignKey(
Verse, on_delete=models.CASCADE, related_name='hemistiche')
text = models.TextField(blank=False)
# nothing else
如您所见,Hemistiche只有几个字段。 在大多数情况下,Verse会有2个杂项。 但是,很少有我在一节中有3 ou 4个单字。
所以问题是:知道我可能有2、3或4个,但有没有办法将Hemistich作为Verse的一部分包含在内,但我不能一劳永逸地设置一次。
更清楚吗?
答案 0 :(得分:0)
如果我正确理解您想要什么。现在,我将向您展示一个小例子。您具有ForeignKey
(ManyToOne
/ OneToMany
)关系。
class Verse(models.Model):
code = models.CharField(max_length=10, verbose_name='vers', unique=True) # ex : v01
class Hemistiche(models.Model):
code = models.CharField(max_length=20, verbose_name='codeHem', unique=True) # ex : v01h01, v01h02
verse = models.ForeignKey(Verse, on_delete=models.CASCADE, related_name='hemistiche')
text = models.TextField(blank=False)
关于模型,Verse
对象代表One
的一面,而Hemistiche
对象代表Many
的一面。您可以使用RelatedManager
(属于Manager
的子类)进行查询。
from django.http import HttpResponse
from django.db import connection
def my_view(request):
verse = Verse.objects.get(code='v01') # return verse object
print(verse.hemistiche) # this returns RelatedManager object, and has instance methods available like, add(), create(), remove().
verse.hemistiche.create(code='hemistiche_code', text='hemistiche text') # This will create row in Hemistiche table, with associated verse_id.
verse.hemistiche.add(hemistiche1, hemistiche2, hemistiche3) # This will update all hemistiche row and sets associated verse_id for it.
print(connection.queries) # this will log all queries performed in your view. Good for debugging.
return HttpResponse('<h1>test</h1>')
希望,我很有帮助。祝你好运。