私は最終的にデータベースに保存する前に、お互いに関係のある4つのモデルのキーの一意性を検証するための戦略を探しています。複数のモデルが同じビューで検証されています - Django 1.11
つまり、Model.save()
メソッドを使用しているときにデータベースに矛盾がないように、キーの一意性をチェックして、すべての固有キーが本当に一意である場合にのみ使用します。
例として以下の図に続いて、フィールドCNPJ、アドレス、及びLegalPerson
、Email
とPhone
にそれぞれ数は、一意である必要があります。
class StoreRegistrationView(View):
'''
Classe responsavel pelo cadastro de lojas
'''
def post(self, request):
if request.method == 'POST':
#import pdb; pdb.set_trace()
form = StoreForm(request.POST)
if form.is_valid():
lp = LegalPerson(
cnpj = form.cleaned_data['cnpj'],
corporate_name = form.cleaned_data['corporate_name'],
fantasy_name = form.cleaned_data['fantasy_name'],
state_inscription = form.cleaned_data['state_inscription'],
municipal_inscription = form.cleaned_data['municipal_inscription'],
)
lp.save()
address = Address(
street = form.cleaned_data['street'],
neighborhood = form.cleaned_data['neighborhood'],
number = form.cleaned_data['number'],
complement = form.cleaned_data['complement'],
city = form.cleaned_data['city'],
estate = form.cleaned_data['estate'],
country = 'Brasil',
cep = form.cleaned_data['cep'],
latitude = form.cleaned_data['latitude'],
longitude = form.cleaned_data['longitude'],
person = lp,
)
address.save()
email = Email(
address = form.cleaned_data['email'],
person=lp,
)
email.save()
phone = Phone(
number=form.cleaned_data['phone_number'],
person=lp,
)
phone.save()
# Mensagem de sucesso que será disponibilizada para o usuário
messages.success(request, 'Cadastro de loja efetuado com sucesso.')
return redirect('importar-produtos')
messages.warning(request, 'Erro durante o cadastro.')
context = {
'store_form': StoreForm(),
}
return render(request, 'n3oadmin/store-registration.html', context)
私が研究、とDjangoでモデルがModel.full_clean()
、Model.clean()
、およびModel.validate_unique()
のようないくつかの検証方法を持っていることがわかってきました。