Django 当给定另一个模型字段时,如何保存OneTONE模型?
使用此exmaple:Django 当给定另一个模型字段时,如何保存OneTONE模型?,django,django-models,Django,Django Models,使用此exmaple: class ModelA(Model): name = CharField(max_length=100, unique=True) class ModelB(Model): modela = OneToOneField(ModelA) otherfield = ManyToManyField(...) ... 那么,当给定ModelA名称时,如何保存ModelB表单 我在我的观点中尝试过这样的东西: def modelbSav
class ModelA(Model):
name = CharField(max_length=100, unique=True)
class ModelB(Model):
modela = OneToOneField(ModelA)
otherfield = ManyToManyField(...)
...
那么,当给定ModelA名称时,如何保存ModelB表单
我在我的观点中尝试过这样的东西:
def modelbSave(request, modelA_name):
modelA = ModelA.objects.get(name=modelA_name)
modelB = ModelB.objects.get(modela=modelA)
if request.method == "POST":
# Edit existing modelB or save a new one
modelB_form = ModelBForm(request.POST, instance=modelB)
if modelB_form.is_valid():
modelB = modelB_form.save(commit=False)
modelB.modela = modelA # save modelA relationship
modelB.save()
modelB_form.save_m2m() # save other m2m relationships in modelB
else:
....
但我在这一行中得到了错误:
modelB = ModelB.objects.get(modela=modelA)
错误地说:
Exception Value: modelB matching query does not exist.
这说明没有匹配的ModelB实例。为什么你要在创建数据库之前从数据库中读取它?@DanielRoseman我正在尝试创建或更新之类的事情。如果给定modelA名称的modelB不存在,那么视图将继续创建它。但是如果它确实存在,那么视图将进行更新。在保存时,如果给定ModelA名称,ModelB可能存在,也可能不存在,因此此视图函数将处理该问题。好的,捕获DoesNotExist异常并将instance设置为None,然后。@DanielRoseman好的,谢谢。我会的。