我是django的新手并拥有以下型号:
class MainFile(models.Model):
owner = models.ForeignKey(User)
# docfile = models.FileField(verbose_name= 'Enter you file', null=True)
file_id = models.UUIDField(max_length=38, primary_key=True, default=1)
file_name = models.CharField(max_length=70)
file_suffix = models.CharField(max_length=5, blank=True, null=True)
file_date = models.DateTimeField(auto_now_add=True, null=True)
所以我想使用file_id过滤表的一行,并拥有该行,访问file_suffix。目前我发现了以下方法,但它很棘手:
obj = MainFile.objects.filter(file_id = 'e3e978a3-0375-4bb9-85a2-5175e2ec097d')
suffix = [i.file_suffix for i in obj]
我尝试了很多方法,但除了上述情况外没有运气,但我知道这不是正确的方法。如何在使用file_id作为过滤器创建obj之后获取file_suffix?
答案 0 :(得分:5)
您可以简单地将其作为单行播放:
MainFile.objects.values_list('file_suffix', flat=True).get(file_id='e3e978a3-0375-4bb9-85a2-5175e2ec097d')
values_list
queryset method仅从数据库中检索所需的列数据。 get
method然后将单个匹配项返回到您的过滤器。
答案 1 :(得分:3)
您可以使用get
代替filter
obj = MainFile.objects.get(file_id='e3e978a3-0375-4bb9-85a2-5175e2ec097d')
obj.file_suffix
当您的查询集从数据库中取回最多1行时,请使用get
。在这种情况下,由于file_id
被标记为主键,因此您可以确定它是唯一的。