私のWebサイトには、3つのテーブル(宿題、クラス、ランダム)で同じフォームがあります。基本的に、フォームの上部にChoiceFieldを作成して、ユーザーがファイルをアップロードする場所を選択できるようにします。
これらのテーブルには共通の抽象クラスがあるので、どういうわけかそこから選択できるのではないかと思っていました。しかし、その方法を理解することはできません。
または、これにははるかに優れた解決策があるかもしれません。
これが私のコードである場合に備えて:
#models.py
class FileDescription(models.Model):
class Meta:
abstract = True;
ordering = ['file_creation_time']
subject = models.ForeignKey('Subjects', null=True, blank=True, primary_key=True)
subject_name = models.CharField(max_length=100)
file_uploaded_by = models.CharField(max_length=100)
file_name = models.CharField(max_length=100)
file_description = models.TextField()
file_creation_time = models.DateTimeField(auto_now_add=True)
def __unicode__(self):
return u'%s' % (self.file_name)
#template
<ul id="tabs">
<li><a href="#homework">Homework</a></li>
<li><a href="#class-papers">Class Papers</a></li>
<li><a href="#random-papers">Random Papers</a></li>
</ul>
<div id="homework" class="tab-section">
<h2>Homework</h2>
<p>This section contains Homework</p>
{% if homework_files %}
<ul>
{% for file in homework_files %}
<li>{{ file.file_name }}
{% endfor %}
</ul>
{% endif %}
</div>
#forms.py
class Homework_Content_Form(forms.ModelForm):
class Meta:
model=Homework_Content
exclude=('subject',
'subject_name',
'file_creation_time',
'file_uploaded_by',
)