Hi,

To limit the number or rows in an inline, max_num is usually the way to go.
https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.InlineModelAdmin.max_num

As far as having the list of all possibilities available as options goes, 
it gets a little more complicated and I don't think it's something the 
admin really handles out of the box. You're starting to get to a 
complicated enough case where it might make sense to roll your view and 
form code.

It might be possible to do it with a custom form and the proper "initial" 
argument to your formset.

Collin

On Friday, December 5, 2014 9:41:46 AM UTC-5, inoyon artlover KLANGRAUSCH 
wrote:
>
> Did it in this fashion:
>
> models.py
>
> class Interests(models.Model): 
>
> ORDER = [(y, y) for y in range(10, 200, 10)] interest = models.CharField( 
> verbose_name='Interesse', max_length=40) interest_order = 
> models.SmallIntegerField(default=None, choices=ORDER) interest_active = 
> models.BooleanField(default=False)
>
>  class Meta:
>     verbose_name_plural = 'Interessen'
>     ordering = ['interest']
>
>  def __str__(self):
>     return self.interest
>
> class Sports(models.Model): ORDER = [(y, y) for y in range(10, 200, 10)] 
> sport = models.CharField(verbose_name='Sportart', max_length=40) 
> sport_order = models.SmallIntegerField(default=None, choices=ORDER) 
> sport_active = models.BooleanField(default=False)
>
> class Meta:
>     verbose_name_plural = 'Sportarten'
>     ordering = ['sport']
>
> def __str__(self):
>     return self.sport
>
> class CustomUserprofileInterests(models.Model): user = 
> models.OneToOneField(User) interests = models.ManyToManyField( Interests, 
> through='CustomInterests', through_fields=('custominterest', 'interest'), 
> verbose_name='Interessen', null=True, blank=True)
>
> sports = models.ManyToManyField( Sports, through='CustomSports', 
> verbose_name='Sportarten', null=True, blank=True)
>
> class Meta: verbose_name_plural = 'Interessensprofil'
>
> def get_full_name(self):
>     return self.user
>
> def get_short_name(self):
>     return self.user
>
> def __str__(self):
>     return '{0} | {1}'.format(self.user, 'Interessensprofil')
>
> class CustomInterests(models.Model):
>
> WEIGHT = [(y, y) for y in range(1, 7)]
>
> interest = models.ForeignKey(Interests)
> custominterest = models.ForeignKey(CustomUserprofileInterests)
> # interested = models.BooleanField(default=False)
> rating = models.SmallIntegerField(choices=WEIGHT)
>
> class CustomSports(models.Model):
>
> WEIGHT = [(y, y) for y in range(0, 7)]
>
> sport = models.ForeignKey(Sports)
> custominterest = models.ForeignKey(CustomUserprofileInterests)
> # interested = models.BooleanField(default=False)
> rating = models.SmallIntegerField(choices=WEIGHT)
>
> AND THE admin.py
>
> class CustomProfile(admin.StackedInline): model = models.CustomUserprofile 
> can_delete = False verbose_name_plural = 'Nutzerprofile'
>
> class CustomUserAdmin(UserAdmin): inlines = (CustomProfile,)
>
> class CustomInterestsInline(admin.TabularInline): model = 
> models.CustomInterests extra = 9
>
> class CustomSportsInlilne(admin.TabularInline): model = 
> models.CustomSports extra = 9
>
> admin.site.register(models.Interests) admin.site.register(models.Sports) 
> admin.site.register(models.CustomUserprofileInterests) 
> admin.site.register(models.CustomInterests) 
> admin.site.register(models.CustomSports) 
> admin.site.register(models.CustomUserprofileInterests, 
> CustomUserprofileAdmin)
>
> The nexts steps I want to accomplish:
>
> A form for users, they can create/edit the profile. The 'interests' and 
> 'sports' columns have to be prepopulated with all available (declared by 
> 'active' with a Boolean) entries in the interests/sports table. If a user 
> has an 'interest' or 'sports', he/she selects it (checkbox) and rates the 
> entry.
>
> Also the amount of entries to be selected by the user is limited to a 
> defined amount (i.e. 6 or 10) (here would be form validation best practice?)
>
>
> Am Freitag, 5. Dezember 2014 15:00:01 UTC+1 schrieb Collin Anderson:
>>
>> Hi,
>>
>> Create an admin Inline like this:
>>
>> class CustomInterestsInline(admin.TabularInline):
>>     model = CustomInterests
>>
>> class CustomUserprofileInterests(admin.ModelsAdmin):
>>     inlines = [CustomInterestsInline]
>>
>> Collin
>>
>>
>> On Thursday, December 4, 2014 5:58:31 AM UTC-5, inoyon artlover 
>> KLANGRAUSCH wrote:
>>>
>>> I am very beginner in the programming world, so please forgive my lack 
>>> of understanding...
>>> There is a CustomUserprofile in my models.py.. nothin very special about 
>>> this... 
>>>
>>> class Interests(models.Model):
>>>
>>>     RATING = [(y, y) for y in range(1, 7)]
>>>
>>>     interest = models.CharField(max_length=40)
>>>     interest_rating = models.SmallIntegerField(choices=WEIGHT)
>>>
>>>
>>> class CustomUserprofileInterests(models.Model):
>>>
>>>     user = models.OneToOneField(User)
>>>     interests = models.ManyToManyField(
>>>             Interests, through='CustomInterests',
>>>             through_fields=('custominterest', 'interest'),
>>>             null=True, blank=True)
>>>
>>>
>>> class CustomInterests(models.Model):
>>>
>>>     WEIGHT = [(y, y) for y in range(1, 7)]
>>>
>>>     interest = models.ForeignKey(Interests)
>>>     custominterest = models.ForeignKey(CustomUserprofileInterests)
>>>     rating = models.SmallIntegerField(choices=WEIGHT)
>>>  
>>>
>>> I want to accomplish a rating on each relation in the 'interests = 
>>> ManyToManyField' in my CustomUserprofile. The Interests-Model HAS to have 
>>> an OWN, self relating rating in each 'interest' entry, NOT related to the 
>>> CustomUserprofile.
>>>
>>> Startet lot of investigation and the 'through' option seems to be the 
>>> solution? Don't got it really because in my ModelForm and Admin there is NO 
>>> field to choose some 'interests' and an option to rate it.
>>> Got absolutley NO idea how to do it, would appreciate any hints.
>>>  
>>

-- 
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+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at http://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/f7188387-7136-47b6-a357-c8ce0d53e7b2%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to