Hi,

Thanks. I can't see the wood for the trees at the moment.

Neil

On Mar 17, 2:57 am, aditya <bluemangrou...@gmail.com> wrote:
> ALJ,
> In that case, I think you need multiple models, without inheritance...
>
> Aditya
>
> On Mar 16, 1:48 pm, ALJ <astley.lejas...@gmail.com> wrote:
>
> > Hi aditya,
>
> > I wasn't aware of the editable parameter (which means I've learnt
> > something) but I still don't think it will help me.
>
> > The user will create an 'invoice' for want of a better word, that will
> > be made up of lots of different entries. Some of these are fixed
> > (description and unit price) and therefore selected from a list of
> > options, some are classified (description) but can enter a unit price,
> > and some are unclassified so they will need to enter free text
> > description and unit cost. Eg
>
> > Type, Description, unit price, units
> > Fixed, Commission on Product XXX, £20, [12]
> > Fixed, Commission on Product YYY, £18, [4]
> > Fixed, Inconvenience allowance, £30, [2]
> > Classified, Parking fees, [£10], [1]
> > Classified, Hotel, [£100], [2]
> > Unclassified, [Emergency Courier we didn't think we'd need], [£50],
> > [1]
>
> > [] = user entered,
>
> > > How will the model be used? It looks to me like what you're after is
> > > the 'editable' parameter, as in something like:
> > > class Unclassified(models.Model):
> > >   name = models.CharField(max_length=50)
> > >   cost = models.DecimalField(max_digits=5,decimal_places=2)
>
> > > class Classified(Unclassified):
> > >   name =
> > > models.CharField(default="Hotels",editable=False,max_length=50)
>
> > > class Fixed(Unclassified):
> > >   name = models.Charfield(editable=False,max_length=50)
> > >   cost =
> > > models.DecimalField(max_digits=5,decimal_places=2,editable=False)
>
> > > On Mar 16, 9:36 am, ALJ <astley.lejas...@gmail.com> wrote:
>
> > > > Hi Preston,
>
> > > > Sorry, I don't get it.
>
> > > > The certainly do have the same fields, but sometimes the fields are
> > > > derived from a linked table, or are a foreign key or sometimes text.
> > > > So I don't understand how having the interface adapt to what the
> > > > current type is would work.
>
> > > > ALJ
>
> > > > On Mar 16, 3:04 pm, Preston Holmes <pres...@ptone.com> wrote:
>
> > > > > On Mar 16, 3:21 am, ALJ <astley.lejas...@gmail.com> wrote:
>
> > > > > > This is a bit of a modeling question that I am struggling to get my
> > > > > > head around. How would you model this scenario?
>
> > > > > > I have to record expenses that are of 3 different types.
>
> > > > > > 1. Fixed - The name of the expense and unit amount are fixed. For
> > > > > > example, "inconvenience allowance" of £30 per day.
> > > > > > 2. Classified - The name of the expense is fixed, but the actual 
> > > > > > unit
> > > > > > amount isn't. For example "Hotel expenses". The actual unit amount
> > > > > > will depend on the hotel they stay at. They'll need to enter that
> > > > > > themselves.
> > > > > > 3. Unclassified - The name of the expense and the amount is 
> > > > > > arbitrary.
> > > > > > So they may have an expense we haven't thought of before but it 
> > > > > > needs
> > > > > > to go in.
>
> > > > > > Of course I'll need to create a summary that tots up the total
> > > > > > expenses for the particular event.
>
> > > > > whether you subclass a base model, or simply have a "type" field on
> > > > > your expense object is going to depend on the details and nuance of
> > > > > the rest of your business logic in your app.  I would only say that
> > > > > simple is better unless you have a reason or need for the complexity.
>
> > > > > Given that the fields between them are identical, I would probably
> > > > > just use a "type" choice field and have the interface adapt as needed.
>
> > > > > -Preston
>
> > > > > > Would the best way of doing this be:
>
> > > > > > a) Have a base model and then build on that for the 3 different
> > > > > > scenarios?
> > > > > > b) Have three different tables and then do a union on them?
>
> > > > > > Just for interest ... this is where I got so far, but am now stumped
>
> > > > > > class CostType(models.Model):
> > > > > >     name = models.CharField("Name", max_length=30) 'e.g. commission,
> > > > > > subsistence ...
>
> > > > > > class CostItem(models.Model):
> > > > > >     name = models.CharField("Name", max_length=50) 'e.g. product x,
> > > > > > inconvenience allowance, ...
> > > > > >     cost_type = models.ForeignKey(CostType, verbose_name="Type")
>
> > > > > > class Rate(models.Model):
> > > > > >     cost_item = models.ForeignKey(CostItem, verbose_name="Item")
> > > > > >     valid_from = models.DateField("From")
> > > > > >     valid_till = models.DateField("Till")
> > > > > >     unit_amount = models.DecimalField("Price Per Unit", 
> > > > > > max_digits=5,
> > > > > > decimal_places=2)
>
> > > > > > 'Costs with a fixed description and unit amount
> > > > > > class FixedCostList(models.Model):
> > > > > >     markettingevent= models.ForeignKey(Event)
> > > > > >     rate = models.ForeignKey(Rate)
> > > > > >     units = models.IntegerField()
>
> > > > > > 'Costs with a fixed description but arbitrary amount
> > > > > > class StructuredCostList(models.Model):
> > > > > >     markettingevent= models.ForeignKey(Event)
> > > > > >     cost_item = models.ForeignKey(CostItem, verbose_name="Item")
> > > > > >     unit_amount = models.DecimalField("Price Per Unit", 
> > > > > > max_digits=5,
> > > > > > decimal_places=2)
> > > > > >     units = models.IntegerField()
>
> > > > > > 'Costs with both a arbitrary description and amount
> > > > > > class OtherCostList(models.Model):
> > > > > >     markettingevent= models.ForeignKey(Event)
> > > > > >     description = models.CharField("Name", max_length=30)
> > > > > >     unit_amount = models.DecimalField("Price Per Unit", 
> > > > > > max_digits=5,
> > > > > > decimal_places=2)
> > > > > >     units = models.IntegerField()

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-us...@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to