#7446 closed (invalid)
[newforms-admin] inline editing with more than one foreign key to same model
Reported by: | Owned by: | nobody | |
---|---|---|---|
Component: | contrib.admin | Version: | newforms-admin |
Severity: | Keywords: | m2m fk inline foreign key | |
Cc: | Triage Stage: | Unreviewed | |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
Given the following: 'ModelB' is edited inline with 'ModelA', and ModelB has more than one foreign key to ModelA.
If any of the foreign key fields in ModelB are left blank, then they should default to the value currently being added in ModelA.
In the case where there are no ModelA objects all foreign key fields in ModelB will be set to the object currently being added in ModelA - a probable combination for this type of model anyway.
http://code.djangoproject.com/browser/django/branches/newforms-admin/docs/admin.txt#L536 mostly solved my problem for an inline interface for this type of model, however if I leave the second foreign key reference blank I get an error indicating that a selection is required. I think it'd be better to just have it use the value being entered in the field that was specified as 'fk_name'.
Change History (3)
comment:1 by , 16 years ago
Resolution: | → invalid |
---|---|
Status: | new → closed |
comment:2 by , 16 years ago
That depends on the model; here's an example (I wouldn't have though of this if I didn't have a use case!):
class Language(models.Model): id = models.CharField(max_length=5, primary_key=True) class Language_locale(models.Model): language = models.ForeignKey(Language, related_name='language_id') displayLanguage = models.ForeignKey(Language, related_name='display_name') displayName = models.CharField(max_length=16)
A Language id would be something like 'en', 'fr', or 'en_ca', 'fr_ca', etc. A Language_locale defines the human-readable form of a language name. For example, the entry ('en', 'en', 'English') indicates that the human-readable name of the Language 'en' in the locale 'en' is 'English'. The entry ('en', 'fr', 'anglais') indicates that the human-readable name of the Language 'en' in the locale 'fr' is 'anglais'.
I guess it doesn't matter since I can just save a new Language entry then select it in the secondary foreign key field in Language_locale when I want to create an entry where both foreign keys point to the same Language. I'll have to click 'save' twice though..
comment:3 by , 16 years ago
Your use case is quite specific and changing the default behavior for this would just not be the right thing. However, you might want to read into model formsets since you can override save behaviors of the inline and do just about whatever you like.
I don't think you understanding the documentation. Given your
ModelA
and
ModelB
example there is *always* only one foreign key that will be assigned to the new
ModelB
instance. The other foreign key is meant to be selected by the user. It would not make any sense always create an object with *both* foreign keys to the same object.