2016-05-26 8 views
0

Ich versuche, ein berechnetes Feld in mein Materialmodell hinzufügen meine auf der Hand InventarModelle in anderen Anwendungen aus berechnetem Feld in django Zugriff

hierfür zu berechnen i in 3 Modellen zu dem acces anderen Anwendungen befanden versuchen: Apps Inventar, Verkauf und Einkauf.

Anstatt zu importieren, verwende ich den App-Namen als Objekt. Ich kann es nicht importieren, da kein Cross-Import möglich ist.

Aber ich bekomme immer Fehler, dass - globaler Name 'Inventar' nicht definiert ist.

Was mache ich falsch? Kann ich das generell so machen?

@with_author 
class Material(models.Model): 
    version = IntegerVersionField() 
    code = models.CharField(max_length=30) 
    name = models.CharField(max_length=30) 
    slug = models.SlugField(max_length=80, blank=True) 
    description = models.TextField(null=True, blank=True) 
    materialuom = models.CharField(max_length=1, 
           choices=UOM_CHOICES) 
    creation_time = models.DateTimeField(auto_now_add=True, blank=True) 
    itemgroup = models.ForeignKey(ItemGroup, on_delete=models.PROTECT) 
    keywords = models.CharField(max_length=50,null=True, blank=True) 
    valid_from = models.DateTimeField(null=True, blank=True) 
    valid_to = models.DateTimeField(null=True, blank=True) 
    min_quantity = models.DecimalField(max_digits=19, decimal_places=10) 
    trigger_quantity = models.DecimalField(max_digits=19, decimal_places=10) 
    max_quantity = models.DecimalField(max_digits=19, decimal_places=10) 
    active = models.BooleanField(default=True) 
    is_production = models.BooleanField(default=True) 


    def _get_total(self): 
    # "Returns the total" 

     return inventory.Inventory.objects.filter(material_id=self.id).aggregate(Sum('quantity')) + purchase.PO.objects.filter(material_id=self.id).aggregate(Sum('quantity')) - sales.SO.objects.filter(material_id=self.id).aggregate(Sum('quantity')) 


    total = property(_get_total) 
+0

Sie haben nicht gezeigt, was Ihre Importe sind. Ich bin mir sicher, dass Sie _get_total nicht aus irgendeiner Art von Schleife aufrufen. – e4c5

Antwort

1

Sie können versuchen, die erforderlichen Modelle lokal in der Funktion _get_total zu importieren.

Verwandte Themen