2016-09-07 2 views
5

ManyToMany Field Coming as objectDjango ManyToMany Feld mit Feldname Werte

model.py

class MedtechProductCategory(models.Model): 
name = models.CharField(max_length=128, null=False, blank=False) 
type = models.CharField(choices=type_choices_for_tag, max_length=512) 

class Meta: 
    db_table = 'medtech_product_category' 

class ProductsInfo(models.Model): 
deal_active = models.BooleanField(default=True) 
category = models.ManyToManyField(MedtechProductCategory, related_name='product_info_category') 

class Meta: 
    db_table = 'products_info' 

def getTags(self): 
    return self.category.values_list() 

admin.py

class ProductsInfoAdmin(admin.ModelAdmin): 
filter_horizontal = ('category',) 
admin.site.register(ProductsInfo, ProductsInfoAdmin) 

So möchte ich in der Filtersuche den Namen der Kategorie Feld zeigen, und möchte sie während des Speicherns als Objekte speichern.

Wie es fertigen Sie den Namen des ManyToMany Feld zu zeigen und speichern, die Objekte des ManyToMany Feld

Antwort

5

hinzufügen __unicode__ Methode, um Ihr Modell speichern, die die Zeichenfolge, die Sie verwenden möchten, wird zurückkehren.

Für Python 3 verwenden Sie stattdessen __str__.

# on ProductsInfo model 
def __str__(self): 
    return self.category.name 
+0

welches Modell MedtechProductCategory oder ProductsInfo und was hinzugefügt werden sollte, um filter_horizontal? – Gagan

+0

@Gagan ist es eine gute Übung, eine "__str__" oder "__unicode__" -Methode in jedes von Ihnen erstellte Modell aufzunehmen. Das obige Beispiel sollte auf das 'ProductsInfo'-Modell gehen. Ich verstehe den Rest Ihrer Frage nicht. – denvaar

Verwandte Themen