Django与“合作”;字典;桌子

Django与“合作”;字典;桌子,django,django-forms,Django,Django Forms,我对django的形式和布局有一些误解。 我有一个字典样式的表,如下所示: class Ministry(models.Model): category = models.CharField(max_length='128', null=True) sub_category = models.CharField(max_length='128', null=True) tip = models.TextField() <select id="id_category

我对django的形式和布局有一些误解。 我有一个字典样式的表,如下所示:

class Ministry(models.Model):
    category = models.CharField(max_length='128', null=True)
    sub_category = models.CharField(max_length='128', null=True)
    tip = models.TextField()
<select id="id_category" name="category">
    <option value="" selected="selected">---------</option>
    <option value="9">IMAGES Photography</option>
    <option value="11">IMAGES Digital Art</option>
    <option value="12">IMAGES Typography and Layouts</option>
    ..........
由于这个表,我在类别和子类别之间有一个直接的字典式依赖关系。我想在表单上使用它,就像一个下拉列表。 但我不明白,我怎么能在表单上分别取两个字段? 我使用这种变体:

def __unicode__(self):
    return self.category + " " + self.sub_category
在表格上,我只有一个下拉列表,如下所示:

class Ministry(models.Model):
    category = models.CharField(max_length='128', null=True)
    sub_category = models.CharField(max_length='128', null=True)
    tip = models.TextField()
<select id="id_category" name="category">
    <option value="" selected="selected">---------</option>
    <option value="9">IMAGES Photography</option>
    <option value="11">IMAGES Digital Art</option>
    <option value="12">IMAGES Typography and Layouts</option>
    ..........

---------
影像摄影
图像数字艺术
图像排版和布局
..........
我不理解,为了自动完成这两个下拉列表,我需要使用jQuery或其他什么。但我不敢相信,django没有一个简单的方法来分隔这两列。 最后,我需要选择类别(例如图像),然后选择子类别(例如数字艺术),然后通过表单上的“id_category”字段传递值“11”。 还有一件事:当我有最后一篇文章,并且我试图在模板上只显示类别时,我仍然有“图像数字艺术”,但我只需要“图像”。我知道,那是因为我试图返回category+sub_category

你能给我一个建议,我如何能分别处理这两个专栏

编辑:


为了明确我的需求,我只希望表单上有一个具有直接依赖关系的表和两个下拉列表。

不要在CharField中指定
null=True
,通常
max_length
的值为
int
,因此,指定
max_length=128
。这是一个很好的解决方案,但通过这种方式,我将有两个表和一个下拉列表,但我希望有一个表在类别和子类别之间具有直接依赖关系,并且在表单上有两个下拉列表
class Category(models.Model):
    name = models.CharField(max_length=128, blank=True)

    def __unicode__(self):
        return self.name

class Ministry(models.Model):
    category = models.ForeignKey(Category)
    sub_category = models.CharField(max_length=128, blank=True)
    tip = models.TextField()

    def __unicode__(self):
        return "%s %s" % (self.category.name, self.sub_category)