【发布时间】:2017-02-14 16:04:58
【问题描述】:
我在 django 中查询一个 PostgreSQL 数据库,问题如下:
如果我在数据库中有值的列 - id = 1, username = blah, desc = smth,则查询返回正确对象的查询集,但值 - id = smth, username = 1, desc = blah
虽然我可以轻松地将正确的值附加到某些东西上,但当我尝试删除对象时会出现问题,因为在 id 上它需要一个 int 而不是 charfield。如果有人可以向我解释发生了什么以及如何解决它,我会很高兴。
这是我的代码:
waiting_users = OnlineUsers.objects.all()
print(waiting_users)
# If there are waiting users connect to one of them
if waiting_users.exists():
print("There are people on the list")
user_topair = waiting_users.first()
pair = PairUsers()
print(user_topair.username)
print(user_topair.reply_channel_name)
print(user_topair.id)
pair.username_a = username
pair.username_b = user_topair.reply_channel_name
pair.reply_channel_a = reply_channel_name
pair.reply_channel_b = user_topair.id
pair.save()
# user_topair.delete()
else:
# else put the user on the waiting list
print("There is no one in the list")
OnlineUsers(username, reply_channel_name).save()
message.reply_channel.send({'text': "Please wait while we find other players"})
我的模型:
class OnlineUsers(models.Model):
username = models.CharField(max_length=150, blank=False, null=False)
reply_channel_name = models.CharField(max_length=255, blank=False, null=False)
def __init__(self, username, reply_channel, *args, **kwargs):
super().__init__(*args, **kwargs)
self.username = username
self.reply_channel_name = reply_channel
class PairUsers(models.Model):
username_a = models.CharField(max_length=150, blank=False, null=False)
username_b = models.CharField(max_length=150, blank=False, null=False)
reply_channel_a = models.CharField(max_length=255, blank=False, null=False)
reply_channel_b = models.CharField(max_length=255, blank=False, null=False)
score_a = models.FloatField(blank=True, null=True)
score_b = models.FloatField(blank=True, null=True)
【问题讨论】:
-
你在这段代码中的什么地方看到了被交换的东西?
-
@DanielRoseman 在 3 个打印行我看到它们被交换并且不像在数据库中
-
请展示您的模型,以及您在其中创建 OnlineUsers 对象的任何代码。
-
将它们添加到我正在创建 UsersOnline 的帖子和其他地方
标签: python django database postgresql