以下是有关该问题的日志条目。
2023-09-25 10:29:25,768 - facebookapi.fetchMetadata - CRITICAL - about to save to master
2023-09-25 10:29:25,771 - facebookapi.fetchMetadata - CRITICAL - Master exists now update...
2023-09-25 10:29:25,773 - facebookapi.fetchMetadata - CRITICAL - _master.save() Exception: 'QuerySet' object has no attribute 'client'
这里有两个模型Client和Master
class Client(models.Model):
id = models.BigAutoField(primary_key=True),
name = models.CharField(max_length=200, blank=False, null=True)
#more fields abbreviated
class Master(models.Model):
id = models.BigAutoField(primary_key = True)
client = models.ForeignKey(Client, on_delete=models.CASCADE)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
user_metadata = models.JSONField(max_length=5000, null=True, blank=True)
user_id = models.CharField(max_length=500, blank=False, null = True)
user_name = models.CharField(max_length=500, blank=False, null = True)
#more fields abbreviated
以及生成错误的代码。
logger.critical("about to save to master+++++++++++++++++++++OOOOOOOOOOOO+++++++++++++")
try:
_master = Master.objects.filter(client=client_fk)
if _master is None:
logger.critical("Master does not exist now create...")
new_master = Master.objects.create()
new_master.client = client_fk
new_master.user_id = user_id
new_master.user_name = result["name"]
new_master.user_apprequests = _connections1["apprequests"]
new_master.user_business_users = _connections1["business_users"]
new_master.user_businesses = _connections1["businesses"]
new_master.user_accounts = _connections1["accounts"]
new_master.user_adaccounts = _connections1["adaccounts"]
new_master.user_assigned_ad_accounts = _connections1["assigned_ad_accounts"]
new_master.user_assigned_pages = _connections1["assigned_pages"]
new_master.user_permissions = _connections1["permissions"]
new_master.user_personal_ad_accounts = _connections1["personal_ad_accounts"]
new_master.user_metadata = result["metadata"]
new_master.account_status = "created"
new_master.save()
else:
logger.critical("Master exists now update...")
logger.critical("Master.client: %s", _master.client)
#_master.client = client_fk
_master.user_id = user_id
_master.user_name = result["name"]
_master.user_apprequests = _connections1["apprequests"]
_master.user_business_users = _connections1["business_users"]
_master.user_businesses = _connections1["businesses"]
_master.user_accounts = _connections1["accounts"]
_master.user_adaccounts = _connections1["adaccounts"]
_master.user_assigned_ad_accounts = _connections1["assigned_ad_accounts"]
_master.user_assigned_pages = _connections1["assigned_pages"]
_master.user_permissions = _connections1["permissions"]
_master.user_personal_ad_accounts = _connections1["personal_ad_accounts"]
_master.user_metadata = result["metadata"]
new_master.account_status = "updated"
_master.save()
return Response("Master saved", status=status.HTTP_200_OK)
except Exception as e:
logger.critical("_master.save() Exception: %s", e)
return Response(e, status=status.HTTP_400_BAD_REQUEST)
我尝试将过滤器更改为“client_id”,我尝试修改模型,使客户端变为client_id,并进行迁移,但错误抱怨找不到client_id_id
我尝试删除外键,然后迁移,然后将其添加回来并再次迁移,但无济于事
接下来我可以尝试什么?我应该创建一个新的 Master2 模式吗?我应该终止所有迁移并重新开始吗?
目标是如果没有记录则创建一条新记录,如果有记录则更新当前记录。
我是否应该放弃整个外键思维并使用代码来确保关系?
谢谢,
莫
答案是将“过滤器”更改为“获取”,问题就消失了。