0
我是Django的新手,我正在構建文檔可見性/狀態應用程序。每個稱爲「縮進」的文檔都有一些「屬性」,這些屬性具有多個「狀態」。返回相關(1:M)的Django對象與許多作爲列表
在應用程序的儀表板上,我需要將屬性動態地呈現爲列,並將狀態作爲下拉列表中的選項動態呈現。
我想我需要返回一個字典如下 - 但如果你有更好的建議,請讓我知道。
{ 1 : ['status1','status2', 'status3'], 2 : ['status1','status2', 'status3'], ... }
凡數是屬性ID。
這裏是我的模型:
class Indent(models.Model):
dateCreated = models.DateTimeField(auto_now=True)
indentNumber = models.CharField(max_length=75)
creator = models.ForeignKey(settings.AUTH_USER_MODEL)
def __str__(self):
return '%s' % (self.indentNumber)
class Meta:
verbose_name = 'Indents'
verbose_name_plural = "Indents"
class Files(models.Model):
fileLink = models.FileField(upload_to='indents/', null=True) #Add 'indents/userID'
indent = models.ForeignKey(Indent, on_delete=models.CASCADE)
def __str__(self):
return '%s' % (self.indent)
class Meta:
verbose_name = 'Files'
verbose_name_plural = "Files"
"""
TO-DO
REMOVE NULL CONSTRAINT
"""
class Attribute(models.Model):
name = models.CharField(max_length=75)
user = models.ForeignKey(settings.AUTH_USER_MODEL, null=True)
def __str__(self):
return '%s' % (self.name)
class Meta:
verbose_name = 'Attributes'
verbose_name_plural = "Attributes"
"""
TO-DO
For the names of Status objects, it needs to be more descriptive and accurate
"""
class Status(models.Model):
name = models.CharField(max_length=255)
attribute = models.ForeignKey(Attribute, on_delete=models.CASCADE)
def __str__(self):
return '%s' % (self.name)
class Meta:
verbose_name = 'Status'
verbose_name_plural = "Status"
class IndentAttribute(models.Model):
indent_id = models.ForeignKey(Indent, on_delete=models.CASCADE)
attribute_id = models.ForeignKey(Attribute, on_delete=models.CASCADE)
status_id = models.ForeignKey(Status, on_delete=models.CASCADE, null=True)
def __str__(self):
return '%s - %s' % (self.indent_id, self.attribute_id)
class Meta:
verbose_name = 'Indent_Attribute'
verbose_name_plural = "Indent_Attribute"
下面是我們正在構建的儀表板的一個例子:
感謝您的回覆! 任何想法,如果Django有一個方法來允許我加入兩個查詢集?或者我應該只是寫一些Python代碼來做到這一點? 只是想知道在Django中是否有一個更簡單的方法。 –
@RizwanQaiser我不相信你可以將兩個查詢集合在一起,但是你可以用'list(my_queryset)'將它們轉換爲列表,然後將它們連接在一起。希望有所幫助! – Franey
DOPE!謝啦。這是我在SO的第一個問題,你真的幫了忙。你是一個了不起的人:) –