为这个奇怪的标题道歉,但是发现了一个有趣的问题,涉及与post.save(来自表单)的冲突以及我模型中的 unicode (self)返回。
Models.py
class NumericTraits(models.Model):
feature_id = models.IntegerField(primary_key=True)
species = models.ForeignKey('Species')
traits = models.CharField(max_length=30)
cite = models.ForeignKey(Citation)
username = models.CharField(max_length=30)
dt = models.CharField(max_length=30)
def __unicode__(self):
return self.species_id + self.traits + self.cite_id
class Meta:
db_table = 'numeric_traits'
verbose_name = "Numeric Traits"
verbose_name_plural = "Numeric Traits"
class Citation(models.Model):
cite_id = models.CharField(primary_key=True, max_length=25, default=citation_id_create)
citation_name = models.CharField(max_length=100)
citation = models.TextField()
def __unicode__(self):
return self.citation_name
class Meta:
managed = False
db_table = 'citation'
ordering = ['citation_name']
views.py
def dbPost(request):
if request.method == 'POST':
form = PostForm(request.POST)
if form.is_valid():
post = form.save( commit = False)
citeId = request.POST.get("citation", "")
post.cite_id = Citation.objects.get(cite_id = citeId)
post.save()
return render(request, 'app/SaveSuccess.html')
else:
form = PostForm()
在这种情况下,我发布的值(例如)' citation1' - 这里指的是主键I" m。我用" self.citation_name" (这是#34; Ainley等1995)在django admin中显示一个直观的名字。
然而,当我去保存时,这只是给我一个错误(例如,cite_id = Ainley等1995不存在)。
因此,它获取self.citation_name的值并返回它,然后尝试查找匹配的cite_id。但是,我希望它返回cite_id值,找到记录,同时在我的模型中维护self.citation_name,这样我就可以更轻松地读取管理记录。
非常感谢任何帮助 感谢
答案 0 :(得分:0)
当然......总是很简单..我想当我试图分配" post.cite_id"时,它试图以一种有趣的方式将它分配给外键..修正了这个通过改变。
post.cite_id = .....
到
post.cite = .....