Django 一个简单的查询让我抓狂 ''int' object is not iterable'
Django a simple query makes me crazy ''int' object is not iterable'
我有两个模特:
class MasterData(models.Model):
ID = models.AutoField(primary_key=True)
Companyname = models.CharField('Companyname', max_length=128, blank=True, null=True)
UserID = models.IntegerField('UserID')
class Prefixes(models.Model):
ID = models.AutoField(primary_key=True)
UserID = models.ForeignKey('MasterData', on_delete=models.CASCADE)
InvoiceNoPrefix = models.CharField('InvoiceNoPrefix', max_length=5, blank=True, null=True)
不,我想做一个简单的 objects.get_or_create 如果您是第一次访问该站点并且不存在应该创建记录的记录。
@login_required(login_url='/backend/')
def edit_prefixes(request):
user_id = request.user.id
userfrommasterdata = MasterData.objects.filter(UserID__in=user_id)
prefixes_data = Prefixes.objects.get_or_create(UserID=userfrommasterdata)
我得到的只是:'int' 对象不可迭代
我想念什么?在我的 MasterData 视图中,它运行完美:
@login_required(login_url='/backend/')
def edit_masterdata(request):
user_id = request.user.id
# stamdata_data = get_object_or_404(Stamdata, pk=user_id)
stamdata_data, _ = MasterData.objects.get_or_create(UserID__iexact=user_id, UserID=user_id)
filter() 将始终为您提供一个 QuerySet,即使只有一个对象匹配查询 - 在这种情况下,它将是一个包含单个元素的 QuerySet。
如果您知道只有一个对象与您的查询相匹配,您可以使用直接 returns 对象的 get() 方法:
更多信息来自 Django Documentation
试试这个:
userfrommasterdata = MasterData.objects.filter(UserID=user_id).first()
@login_required(login_url='/backend/')
def edit_prefixes(request):
user_id = request.user.id
userfrommasterdata = MasterData.objects.filter(UserID=user_id).first()
prefixes_data, _ = Prefixes.objects.get_or_create(UserID=userfrommasterdata)
我有两个模特:
class MasterData(models.Model):
ID = models.AutoField(primary_key=True)
Companyname = models.CharField('Companyname', max_length=128, blank=True, null=True)
UserID = models.IntegerField('UserID')
class Prefixes(models.Model):
ID = models.AutoField(primary_key=True)
UserID = models.ForeignKey('MasterData', on_delete=models.CASCADE)
InvoiceNoPrefix = models.CharField('InvoiceNoPrefix', max_length=5, blank=True, null=True)
不,我想做一个简单的 objects.get_or_create 如果您是第一次访问该站点并且不存在应该创建记录的记录。
@login_required(login_url='/backend/')
def edit_prefixes(request):
user_id = request.user.id
userfrommasterdata = MasterData.objects.filter(UserID__in=user_id)
prefixes_data = Prefixes.objects.get_or_create(UserID=userfrommasterdata)
我得到的只是:'int' 对象不可迭代
我想念什么?在我的 MasterData 视图中,它运行完美:
@login_required(login_url='/backend/')
def edit_masterdata(request):
user_id = request.user.id
# stamdata_data = get_object_or_404(Stamdata, pk=user_id)
stamdata_data, _ = MasterData.objects.get_or_create(UserID__iexact=user_id, UserID=user_id)
filter() 将始终为您提供一个 QuerySet,即使只有一个对象匹配查询 - 在这种情况下,它将是一个包含单个元素的 QuerySet。
如果您知道只有一个对象与您的查询相匹配,您可以使用直接 returns 对象的 get() 方法:
更多信息来自 Django Documentation
试试这个: userfrommasterdata = MasterData.objects.filter(UserID=user_id).first()
@login_required(login_url='/backend/')
def edit_prefixes(request):
user_id = request.user.id
userfrommasterdata = MasterData.objects.filter(UserID=user_id).first()
prefixes_data, _ = Prefixes.objects.get_or_create(UserID=userfrommasterdata)