擅长:python、mysql、java
<p>即使数据不经常更改,将数据放入数据库并将Python放入Python文件似乎是最自然的做法。你提出的解决方案看起来像是在和Django想做的事情做斗争。在</p>
<p>如何看待数据库解决方案?在</p>
<pre><code>class Subject(models.Model):
parent = models.ForeignKey("self")
name = models.CharField(max_length=100)
hebrew_name = models.CharField(max_length=100)
class Summary(models.Model):
...
subject = models.ForeignKey("Subject")
...
class SubjectForm(forms.Form):
subject = forms.ModelChoiceField(queryset=Subject.objects.none())
...
def __init__(self, *args, **kwargs): # see http://stackoverflow.com/a/4880869/1477364
sub = kwargs.pop('parent_subject')
super(SubjectForm, self).__init__(*args, **kwargs)
parent_subject = Subject.objects.get(name=sub)
sub_subjects = Subject.objects.filter(parent=parent_subject)
self.fields['subject'].queryset = forms.ModelChoiceField(queryset=sub_subjects)
</code></pre>
<p>请注意,该代码意味着将始终有一个父主题传递给SubjectForm。(您需要一个“根”主题。)</p>