2017-03-09 1 views
0

M2M je les modèles suivants:enfant Django objet hérité ne peut pas voir parent les attributs

from django.contrib.sites.models import Site 

     class Entity(models.Model): 
      name = models.CharField('Name', max_length=64) 
      desc = models.TextField('Description',) 
      tags = models.ManyToManyField(Tag,related_name='companies') 
      sites = models.ManyToManyField(Site) 

    class Company(Entity): 
     founded_date = models.DateField(blank=True, null=True, help_text='Enter in YYYY-MM-DD format.') 
     employee_amount = models.IntegerField('Number of Employees',blank=True, null=True) 

class Employee(models.Model): 
    user = models.OneToOneField(User) 
    entity = models.ForeignKey('companies.Entity', blank=True, null=True) 

Je suis en train de sauver l'entreprise pour la première fois (ajouter) et mettre à jour (modifier).

Je fais cela à mon avis avec:

try: 
      company = Company.objects.get(employee=get_employee(request.user)) 
      form = CompanyForm(request.POST, request.FILES, instance=company) 
     except: 
      form = CompanyForm(request.POST, request.FILES) 


     if form.is_valid(): 
      company = form.save(commit=False) 

      if action == 'add': 
       try: 
        entity = Entity.objects.get(name=company.name) 
        company = entity.company 
        employee.entity = entity 
        employee.save() 
       except: 
        pass 

      company.save() 
      employee.entity = company 
      employee.save() 
      employee.entity.sites.add(current_site) 
      company.save_m2m() 

Quand je fais cela je reçois l'erreur:

'Company' object has no attribute 'save_m2m'

Comment cela peut-être lorsque le parent « entité » a cette valeur et l'enfant "Société" devrait y avoir accès?

Répondre

1

save_m2m doit être appelée sur le formulaire, pas sur une instance de modèle (voir this topic).