将模型添加到Django外键

时间:2015-07-01 23:49:01

标签: python django django-models

我有一个带外键的模型,允许我引用任意数量的其他模型。所以我可以使用管理界面添加和删除,但是如何以编程方式执行等效操作?

class Json(models.Model):
    data = models.TextField()

class Dweet(models.Model):
    name = models.CharField(max_length = 300)
    data = models.ForeignKey(Json)

enter image description here

2 个答案:

答案 0 :(得分:1)

要使用这些模型,您可以执行以下操作:

>>> from app.models import Json, Dweet
>>> a = Json(data="asdf")
>>> a.save()
>>> b = Dweet(name="Test", data=a)
>>> b.save()
>>> c = Dweet(name="Test2", data=a)
>>> c.save()

之后你最终得到一个Json对象和两个Dweet对象,它们都指向所说的Json对象。这与你向我们展示的两个模型一样有趣。如果你喜欢的话,你可以添加更多的Json对象,但是每个Dweet只能指向一个Json(不确定你是否在问题中要求不同的东西)。

答案 1 :(得分:0)

通过提供的描述不清楚你的问题是什么,但我会尝试根据我能通过快照理解的问题来回答。

实际上一个选项在下拉列表中没有列出两次,而是表示存储在Json表中的两个模型对象,即你已经将Json指定为外键。所以每次加载表单时,它都会请求一个查询集(比如来自J​​son的select *)。所以作为响应,它将接收模型对象(相应模型表中的不同行数)。因此,您需要指定 unicode ()方法,以便在 Json对象 的位置显示对象属性值。所以如果你写一个像

这样的方法
class Json(models.Model):
    data = models.TextField()

    def __unicode__(self):
    return self.data   

您将获得存储在Model对象中的数据,即数据