2017-12-11 17 views
0

외래 키 모델 장고 관리자에서 관련 값을 얻을 수 있지만,하는 방법 저장 나는 관련 가치를 필요로 할 때, 예를 들면 : 나는 Pagamentos 모델을 저장할 때어떻게 내가 FK와 모델을했습니다

class Pedidos(models.Model): 
    ped_cliente = models.ForeignKey(Clientes, verbose_name='Cliente') 
    ped_remetente = models.ForeignKey(Remetentes, verbose_name='Remetente') 
    ped_produto = models.ForeignKey(Produtos, verbose_name='Produto') 
    ped_data_pedido = models.DateField(verbose_name='Data Pedido') 
    ped_quantidade = models.DecimalField(verbose_name='Peso/Volume', max_digits=10, decimal_places=0) 
    ped_key = models.IntegerField(unique=True, editable=False, verbose_name='Cod. Pedido') 

class Pagamentos(models.Model): 
    pag_cliente = models.ForeignKey(Clientes, verbose_name='Cliente') 
    pag_key_ped = models.ForeignKey(Pedidos, verbose_name='Cód. Pedido') 
    pag_vencimento = models.DateField(verbose_name='Data Vencimento') 
    pag_vlr_total = models.DecimalField(verbose_name='Valor Total', max_digits=10, decimal_places=2) 

내가 필요 값 필드 : Pedidos.ped_key 값 I이 값에 액세스하기 위해 할 방법

를받을 pag_key_ped?

답변

0

pag_key_ped.ped_key을 통해 액세스 할 수 있습니다.

그래서 :

>>> p = Pedidos(ped_key=1) 
>>> p.save() 

>>> pagamentos = Pagamentos() 
>>> pagamentos.pag_key_ped = p 
>>> pagamentos.save() 

>>> print(pagamentos.pag_key_ped.ped_key) 
[out] 1 

>>> pagamentos.pag_key_ped = pagamentos.pag_key_ped.ped_key 
>>> pagamentos.save() 

그러나! : 이것은 당신이 원하는 이상한 일이다. pag_key_ped은 이미 ForeignKey이며 다른 ID로 대체하려고합니다. 해당 ID를 가진 객체가 없으면 DoesNotExist 오류가 발생합니다.

+0

어떻게 이런 일을 장고 admim합니까? 모델에서 오버라이드 저장 메소드가 필요합니까? –

+0

정확히 무엇을하려고합니까? ModelAdmin에는 덮어 쓸 수있는 save_method가 있습니다. 문서 체크 아웃 : https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.save_model –