Django 当给定另一个模型字段时,如何保存OneTONE模型?

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

使用此exmaple:

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好的,谢谢。我会的。