راهنمایی در باره جنگو

سلام دوستان دارم با جنگو وب اپی برای مدیریت کتابخانه می نویسم سوالی که دارم اینه که کتابی را که دارای بیش از یک جلد دارند را میخواهم ثبت کنم فیلدی دارم که تعداد جلد های اون کتاب را نگه میداره مثلا 10 جلد حال اگر کسی خواست جلد 5 این کتاب را به امانت ببره چکار کنم که فقط اون جلد را در دست امانت نشان نه کل کتاب را ؟

شاید بهتر باشه هر جلد از اون کتاب رو به صورت یک کتاب جداگانه در دیتابیس ثبت کنید.

با کد نویسی نمیشه این را درست کرد مثلا اگر تعداد جلد ها از یک بیشتر شد به تعداد اون جلد ها در دیتا بیس فیلد ایجاد بشه ؟

میشه ولی فکر نمیکنم این کار درستی باشه. چون باید امکان جستجو با «شابک» هم وجود داشته باشه و شابک جلدهای مختلف یک کتاب با هم تفاوت داره.
پس کسی که کتابها رو وارد میکنه باید حتما برای هر جلد یکبار فرم رو پر کنه.

شابک نداریم و در ضمن این اولین پروژه است که دارم کار می کنم و بیشتر جنبه آموزشی داره برام

خب اگه فقط مشکل اینه که با یه ریکوئست، ۵تا رکورد توی دیتابیس ثبت بشه، دیگه ربطی به django نداره. میتونید یه حلقه‌ی for استفاده کنید:

if book_count > 1:
    for i in range(book_count):
        <db_query>

سلام.
اینکه شابک (یا شماره جلد اون کتاب فرقی نمیکنه) و خود کتاب رو توی یه جدول از دیتابیس ذخیره کنید به نظر کار درستی نمیاد.چون کتاب فارغ از شابک(یا شماره جلد) هستند به صورت کلی(اینطور تصور کنید که دو کتاب یکسان رو بهتون میدن بهتون میدن اینها یکی هستن شما میگی آره خب یکی هستن دیگه).بهتره برای اینکه در آینده همه چیز پروژه براتون به سادگی قابل دسترس و همینطور به سادگی قابل ایجاد باشه (ایجاد دیتا در دیتابیس بر روی شی ای که مد نظر دارید) شما یک جدول را به کتاب اختصاص بدین و نام و توضیحات و نویسنده و … خود کتاب رو بزارید درونش و یک جدول برای اطلاعات مربوط به قرض گرفتن کتاب از کتابخانه باشه که در اینجا شما یه کلید خارجی میزنید به یوزر و یه کلید خارجی به کتاب و اطلاعات مورد نظرت از قبیل شماره جلد امانت گرفته شده، تاریخ امانت بردن،آي دی کارمندی که تایید کرده شما این رو به امانت بردید و … رو اینجا اضافه کنید:

class Book(models.Model):
  title = models.CharField(max_lenght=100)
.
.
.

خب اینم از جدول میانی برای اطلاعات مربوط به امانت بردن:

class Borrow(models.Model):
  book = models.ForeignKey('Book')
  member = models.ForeignKey('User)
  book_id = models.CharField(max_lenght=12)
  barrow_date = models.DateTimeField()
   .
   .
   .

حالا شما در جدول Book فقط کتاب رو میسازید و برای اینکه بگید جلد چندم رو کی برده و در چه تاریخی و کی بهش داده که ببره و … (که در آینده پروژه ات کلی مطمینا چیز میز نیاز هست به این اطلاعات اضاف بشه) توی جدول میانی این کار رو انجام میدی.
حالا اگر خواستی بدونی چند تا از هر کتاب داری:

Borrrow.objects.filter(book__id=12345).count()

کویری بالا نشون میده که چند جلد از کتاب به ID 12345 در کتابخونه وجود داره.اینطوری به هر اطلاعاتی به سادگی دسترسی داری و ساختار مربوط به دیتابیس رو هم رعایت کردی.
دوستان اگر کسی نظری داره لطفا بگه که ایرادات کار من هم در بیاد.ممنون 3>
اگر سوالی هست و جایی رو بد بیان کردم بفرمایید اصلاح کنم و یا بیشتر توضیح بودم.
یا علی

1 Like