On Tue, Jul 12, 2016 at 2:42 PM, Fellipe Henrique <fellipeh@gmail.com> wrote:
On Tue, Jul 12, 2016 at 1:52 PM, Ramiro Morales <cramm0@gmail.com> wrote:Where the 'Conjunto de dados' seen in the screenshot title comes from? Is the code you posted actually in sync with it?
Sorry about that, I take the screenshot before change these text to "DataSet"...
I've prepared this simplified app.
Note: All the is completely centered around controlling the labels in the admin views, this can mean things get completely ugly on ther UI areas.
The Dataset model setup is basically what you posted originally, the Sample model is very similar to Dataset but the M2M relationship between User and Sample is defined through an explicit SampleUserRel model. See
https://docs.djangoproject.com/en/1.9/topics/db/models/#intermediary-manytomany
https://docs.djangoproject.com/en/1.9/ref/models/fields/#django.db.models.ManyToManyField.through
Note: All the is completely centered around controlling the labels in the admin views, this can mean things get completely ugly on ther UI areas.
The Dataset model setup is basically what you posted originally, the Sample model is very similar to Dataset but the M2M relationship between User and Sample is defined through an explicit SampleUserRel model. See
https://docs.djangoproject.com/en/1.9/topics/db/models/#intermediary-manytomany
https://docs.djangoproject.com/en/1.9/ref/models/fields/#django.db.models.ManyToManyField.through
sections of the Django documentation.
#--------------------------------------------
# models.py
# models.py
from __future__ import unicode_literals
from django.db import models
from django.utils.encoding import python_2_unicode_compatible
@python_2_unicode_compatible
class User(models.Model):
username = models.CharField(max_length=200, blank=True, null=True)
email = models.EmailField(blank=False, unique=True)
def __str__(self):
return self.email
@python_2_unicode_compatible
class Dataset(models.Model):
active = models.BooleanField(default=True)
title = models.CharField(max_length=250)
users = models.ManyToManyField(User)
def __str__(self):
return self.title
@python_2_unicode_compatible
class Sample(models.Model):
active = models.BooleanField(default=True)
title = models.CharField(max_length=250)
users = models.ManyToManyField(User, through='SampleUserRel')
def __str__(self):
return self.title
@python_2_unicode_compatible
class SampleUserRel(models.Model):
user = models.ForeignKey(User)
sample = models.ForeignKey(Sample, verbose_name='this can be set with the verbose_name option of the FK field to the remote model in the intermediate model')
def __str__(self):
return "this can be set with the intermediate model's __str__ method"
#--------------------------------------------
# admin.pyfrom django.db import models
from django.utils.encoding import python_2_unicode_compatible
@python_2_unicode_compatible
class User(models.Model):
username = models.CharField(max_length=200, blank=True, null=True)
email = models.EmailField(blank=False, unique=True)
def __str__(self):
return self.email
@python_2_unicode_compatible
class Dataset(models.Model):
active = models.BooleanField(default=True)
title = models.CharField(max_length=250)
users = models.ManyToManyField(User)
def __str__(self):
return self.title
@python_2_unicode_compatible
class Sample(models.Model):
active = models.BooleanField(default=True)
title = models.CharField(max_length=250)
users = models.ManyToManyField(User, through='SampleUserRel')
def __str__(self):
return self.title
@python_2_unicode_compatible
class SampleUserRel(models.Model):
user = models.ForeignKey(User)
sample = models.ForeignKey(Sample, verbose_name='this can be set with the verbose_name option of the FK field to the remote model in the intermediate model')
def __str__(self):
return "this can be set with the intermediate model's __str__ method"
#--------------------------------------------
from django.contrib import admin
from .models import Dataset, User, Sample, SampleUserRel
class DatasetInline(admin.TabularInline):
model = Dataset.users.through
verbose_name = 'this can be set with {Stacked,Tabular}Inline.verbose_name'
verbose_name_plural = 'this can be set with {Stacked,Tabular}.verbose_name_plural'
class SampleUserRelInline(admin.TabularInline):
model = SampleUserRel
extra = 1
verbose_name = "this can be set with intermediate's model verbose_name and overridden with {Stacked,Tabular}Inline.verbose_name"
verbose_name_plural = "this can be set with intermediate model's verbose_name_plural and overridden with {Stacked,Tabular}Inline.verbose_name_plural"
class UserAdmin(admin.ModelAdmin):
list_display = ('email',)
inlines = [DatasetInline, SampleUserRelInline]
admin.site.register(User, UserAdmin)
admin.site.register([Dataset, Sample])
from .models import Dataset, User, Sample, SampleUserRel
class DatasetInline(admin.TabularInline):
model = Dataset.users.through
verbose_name = 'this can be set with {Stacked,Tabular}Inline.verbose_name'
verbose_name_plural = 'this can be set with {Stacked,Tabular}.verbose_name_plural'
class SampleUserRelInline(admin.TabularInline):
model = SampleUserRel
extra = 1
verbose_name = "this can be set with intermediate's model verbose_name and overridden with {Stacked,Tabular}Inline.verbose_name"
verbose_name_plural = "this can be set with intermediate model's verbose_name_plural and overridden with {Stacked,Tabular}Inline.verbose_name_plural"
class UserAdmin(admin.ModelAdmin):
list_display = ('email',)
inlines = [DatasetInline, SampleUserRelInline]
admin.site.register(User, UserAdmin)
admin.site.register([Dataset, Sample])
Btw, something like this is what we talk about when we ask for an excerpt of the code with only the relevant parts, please take the time to prepare things by stripping code unrelated to the issue at hand before posting your code. Help us to help you.
Hoping this is of help,
--
Ramiro Morales
@ramiromorales
@ramiromorales
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/CAO7PdF_dupadcYtQpwWaCOBxTZ13G-rHh%2B4u2sQLbMwa0UJwnA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.


No comments:
Post a Comment