我有一个带外键的模型,允许我引用任意数量的其他模型。所以我可以使用管理界面添加和删除,但是如何以编程方式执行等效操作?
class Json(models.Model):
data = models.TextField()
class Dweet(models.Model):
name = models.CharField(max_length = 300)
data = models.ForeignKey(Json)
答案 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指定为外键。所以每次加载表单时,它都会请求一个查询集(比如来自Json的select *)。所以作为响应,它将接收模型对象(相应模型表中的不同行数)。因此,您需要指定 unicode ()方法,以便在 Json对象 的位置显示对象属性值。所以如果你写一个像
这样的方法class Json(models.Model):
data = models.TextField()
def __unicode__(self):
return self.data
您将获得存储在Model对象中的数据,即数据。