On Mon, 3 Sep 2012 18:51:45 -0700 (PDT), Barry Morrison
<bdmor...@gmail.com> declaimed the following in
gmane.comp.python.django.user:
> Model: http://dpaste.org/dqwmc/
>
> There can be many products.
Okay, a table of products...
> There can be many distributors.
and a table of distributors
> A product could have none or more distributors.
Normal intersect table behavior
> A distributor could only distribute a single product once.
This clause is unclear...
> A distributor could distribute all products.
>
This clause is irrelevant -- it doesn't restrict the data (vs if you
had some requirement that a distributor carrying products a..m is not
allowed to carry product n)
> I imagine a form (admin side):
>
> Product Name:
> Product Description:
> Product Image:
>
> Distributor 1: Radio Field/Boolean
> Distributor 2: Radio Field/Boolean
> Etc. etc.
>
> For some reason I can't wrap my head around this.
Your model (per the linked web page) current ties a product instance
to ONE DISTRIBUTOR ONLY.
In pseudo-SQL, you have defined
create table Distributor
(
ID integer autoincrement primary key, #django adds this
Name varchar(255) not null, #it is redundant to preface fields
#with "distributor" when they are
#IN the table Distributor
URL varchar(255) null, #URL type is django operation
Product boolean #this field is meaningless as
#there is no product referenced
#here
);
create table Product
(
ID integer autoincrement primary key,
Name varchar(255) not null,
Description blob, #or some such large text field
Image varchar(255) null, #image type is django usage
Distributor integer foreign key references Distributor (ID),
#this basically says that this product can have
#only ONE distributor
);
What you really need is not a one-to-many link (one distributor can
have many products, but each product can only have one distributor) but
a many-to-many linkage.
create table Distributor
(
ID integer autoincrement primary key, #django adds this
Name varchar(255) not null,
URL varchar(255) null,
);
create table Product
(
ID integer autoincrement primary key,
Name varchar(255) not null,
Description blob, #or some such large text field
Image varchar(255) null, #image type is django usage
);
create table ProductDistribution
(
ID integer autoincrement primary key,
ProductID integer foreign key references Product(ID),
DistributorID integer foreign key references Distributor(I),
unique (ProductID, DistributorID)
);
As I understand it, Django will create the equivalent of
ProductDistribution when you declare a many-to-many relationship in one
of the parent tables.
--
Wulfraed Dennis Lee Bieber AF6VN
wlf...@ix.netcom.com HTTP://wlfraed.home.netcom.com/
--
You received this message because you are subscribed to the Google Groups "Django users" group.
To post to this group, send email to django...@googlegroups.com.
To unsubscribe from this group, send email to django-users...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/django-users?hl=en.
On Mon, 3 Sep 2012 18:51:45 -0700 (PDT), Barry Morrison
<bdmor...@gmail.com> declaimed the following in
gmane.comp.python.django.user:
> Model: http://dpaste.org/dqwmc/
>
> There can be many products.
Okay, a table of products...
> There can be many distributors.
and a table of distributors
> A product could have none or more distributors.
Normal intersect table behavior
> A distributor could only distribute a single product once.
This clause is unclear...
> A distributor could distribute all products.
>
This clause is irrelevant -- it doesn't restrict the data (vs if you
had some requirement that a distributor carrying products a..m is not
allowed to carry product n)
> I imagine a form (admin side):
>
> Product Name:
> Product Description:
> Product Image:
>
> Distributor 1: Radio Field/Boolean
> Distributor 2: Radio Field/Boolean
> Etc. etc.
>
> For some reason I can't wrap my head around this.